Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS GÜNCEL MAKALELER
emre TAŞ
Başlangıç
emre TAŞ
yazının devamı >
Hüseyin Çelik
Captcha ve Captcha'nın OCR ile analizi
Hüseyin Çelik
yazının devamı >
Önsel Akın
NHibernate
Önsel Akın
yazının devamı >
Mehmet Sencer Karadayı
Lightswitch' e Giriş
Mehmet Sencer Karadayı
yazının devamı >
emre TAŞ
Başlangıç
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSS.NET TV
Android OS Üzerinde Yazılım Geliştirme Android OS Üzerinde Yazılım Geliştirme - Kubilay Kulaoğlu
Android ile Programlamaya Başlangıç Android ile Programlamaya Başlangıç - kubilay Kulaoğlu
WPF-Chart  Kontrolü WPF-Chart Kontrolü - Görkem Sezgin
Silverlight'a Temel Bakış Silverlight'a Temel Bakış - Görkem Sezgin
Linq Teknolojisi Linq Teknolojisi - Görkem Sezgin
Video Gönder Bende Yayınlamak İstiyorum
anketAnket
.NET Yeniliklerini Takip Etmek Sizin İçin Nekadar Önemli ?


Diğer anketler ve sonuçları için tıklayın.
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
 
Apache CLI ile ASP.NET Sayfaları Çalıştırma
Apache HTTP projesinin altında son zamanlarda CLI adlı yeni bir alt başlık belirdi. Bu alt proje Microsoft Windows üzerinde çalıştırılan Apache web sunucularında Microsoft'un .NET CLR özelliği kullanılarak ASP.NET uygulamaları çalıştırmanızı sağlamakta. Apache sunucusu üzerinde ASP.NET sayfaları çalıştırma ile ilgili detaylar için haberi okuyunuz.
.NET ve IIS 6.0 sürümü ile Microsoft web sunucusu pazarında Apache’’nin tahtını tehtid etmeye başladı. Bugün hala bağımsız organizasyonların yaptığı araştırmalar Apache sunucusunun en çok kullanılan sunucu olduğunu göstermekte. Gerek güvenlik nedenleriyle olsun gerekse tüm sistemler üzerinde yüksek performans ile çalışması Apache’’nin başlıca tercih edilme sebeplerinden. Apache esasında sadece basit bir web sunucusu değil Apache Foundation altında bir çok alt projeleri bulunmakta, bunlardan başlıcaları HTTP (web sunucusu projesi), ANT (Java derleme aracı), JAKARTA (Apache üzerinde Java çözümleri sağlamakta), TOMCAT (Jakartanın alt projesi ve Java Server Pages uygulamalarının çalışmasını sağlamakta), vs ... Tüm projeler için www.apache.org sitesini ziyaret edebilirsiniz.

Apache HTTP projesinin altında son zamanlarda CLI adlı yeni bir alt başlık belirdi. Bu alt proje Microsoft Windows üzerinde çalıştırılan Apache web sunucularında Microsoft’’un .NET CLR özelliği kullanılarak ASP.NET uygulamaları çalıştırmanızı sağlamakta. Bunu ufak bir aracı modül gerçekleştirmekte ( mod_aspdotnet ). Açık kodlu olan bu modül Apache.Web kütüphanesi içerisinde System.Web.Host ve System.Web.Request arayüzlerini kullanarak Apache web sunucusu için CLR ASP.NET motoruna erişim kapısı açmaktadır. Bu anlamda ASP.NET ’’in IIS üzerinde size fonksiyonalite olarak sağladığı tüm özellikleri Apache üzerinden uygulama esnasında temin edebilmektesiniz. Fakat geliştirme sürecinde hata ayıklama husunda sadece size web arayüzü sağlamakta buda zaten ASP.NET motorunun bir özelliği. Proje demin de bahsettiğim gibi henüz yeni ve Visual Studio ile hali hazır bir entegrasyonu bulunmamakta.

Performans konusunda bir çok kişi tereddütlü fakat direkt olarak mod_aspdotnet ASP.NET motoruna erişmek için bir arayüz sağladığından ASP.NET motorunun performansı ile doğru orantılı çalışmakta. Keza ASP.NET sayfalarının ilk çalıştıklarında derlenmesi ve sonra hafızadan çalıştırılması gibi özellikler zaten ASP.NET motoru tarafından sunulmakta bu durumda IIS ile Apache arasında ASP.NET projelerinin koşturulması konusunda büyük bir ayrım ortaya çıkmıyor. Aynı zaman da IIS’’in sunduğu uygulama havuzları optimizasyonunu Apache tarafında da gerçekleştirmek mümükün. Şuan için aspdotnet modülünün sadece .NET Framework 1.1 desteği bulunmakta fakat Microsoft’’un 2.0’’ı sürmesi ile beraber .NET Framework 2.0 desteği de eklenecek.

Bir çok kişinin aklında "Peki ya Mono projesi?" sorusu gelmekte. mod_aspdotnet’’in amacı sadece Microsoft Windows platformu üzerinde .NET Framework kaynaklarına Apache üzerinden ulaşabileceğimiz bir arayüz sağlamak. Bu anlamda .NET Framework’’un platform bağımsız implementasyonu olan Mono projesi ile çakıştığı bir durum bulunmamakta.

Kurulum

http://httpd.apache.org/cli/ Adresinden güncel kurulum dosyasını edinebilirsiniz. Bu noktada şunu belirtmekte fayda görüyorum asp_dotnet modülü Apache 2.0 handler spesifikasyonlarına göre geliştirildiğinden 2.0 öncesi sürümlerinde çalşmamaktadır. Kurulum esnasında Apache’’nin çalıştığı klasörünü göstermeniz yeterli. Ardından httpd.conf konfigrasyon dosyasında Modüller bölümünde aşağıdaki değişiklikleri yapmanız gerekmekte.

LoadModule aspdotnet_module modules/mod_aspdotnet.so

AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj licx rem resources resx soap vb vbproj vsdisco webinfo
AspNetMount / "C:/Apache/Apache2/htdocs" AliasMatch /aspnet_client/system_web/(\d+)_(\d+)_(\d+)_(\d+)/(.*) "C:/Windows/Microsoft.NET/Framework/v$1.$2.$3/ASP.NETClientFiles/$4"


    Options FollowSymlinks
    Order allow,deny
    Allow from all
  • LoadModule komutu Apache için genel bir komuttur ve aspdotnet_module modülünün dinamik olarak yüklenmesini sağlar.
  • AddHandler komutu Apache için genel bir komuttur aspx, asax, vs .. gibi dosya uzantılarının hangi modül tarafından ele alınacağını tanımlar.
  • AspNetMount komutu aspdotnet_module modülüne özel bir komuttur ve bu modül sağlıklı yüklenmedikçe bu komut geçerli olmaz dolayısı ile çalıştırma zamanında hata verir.  Bu komutun amacı hangi sanal dizinde fiziksel olarak hangi klasörde aspdotnet_module ’’ün aktif olacağını belirtmektedir. Yukardaki tanım kök dizininden başlayarak tüm klasörlerde aspdotnet_module ’’ünün çalışabileceğini belirtmektedir.
  • AliasMatch komutu çalışması için mod_alias ’’a ihtiyaç duyar moduller bölümünden alias_module ’’ün tanımlandığından emin olmalısınız.Bu komut ASP.NET tarafından kullanılan javascript dosyaları "ASP.NETClientFiles" için sanal dizin adreslemesi yapmaktadır. Hemen altındaki Directory tanımıda bu klasörü yetkilendirilmesi gerçekleştirilmektedir.
Eğer her klasörde index.aspx veya default.aspx dosyasının tanımlı çalışmasını istiyorsanız DirectoryIndex komutuna aşağıdaki gibi ekleme yapınız.

DirectoryIndex index.php index.html index.html.var index.aspx default.aspx
aspdotnet_module’’ün sağlıklı çalışmasını kontrol etmek için basit bir aspx dosyası deneyebilirsiniz. Eğer hata ile karşılaşırsanız lütfen logs klasörü altındaki error.log’’u kontrol ediniz. En çok karşılaşılan Internal Server Error hatası için error.log’’da aşağıdaki gibi bir uyarı göreceksiniz.

[Sat Jun 04 10:19:58 2005] [error] [client 127.0.0.1] mod_aspdotnet: Forbidden, Options ExecCGI is not set for: C:/Apache/Apache2/htdocs/test.aspx

Hatanın da belirttiği gibi aspdotnet modülünü çalıştıracağımız klasörlere ExecCGI (CGI çalıştırma) izni vermemiz gerekmekte. Zaten yukarda da anlattığım gibi bu modül bize bir arayüz sağlamakta bu şu anlama geliyor Apache uygulamanın güvenliğini denetleyemiyor; çalışma zamanında sağlanacak güvenlik Microsoft Windows tarafında ASP.NET motoruna ve işletim sistemine ait olduğundan, aspdotnet modülü sadece girdileri ASP.NET motoruna iletiyor ve çıktıları kullanıcıya geri iletiryor buda bu modülün CGI özelliği taşıdığını gösteriyor. Bu neden den aspdotnet modülü çalıştıracağımız klasörlere Apache konfigrasyonu tarafında ExecCGI izni vermemiz gerekiyor. Bunuda aşağıdaki şekilde gerçekleştirebiliriz.


    Options Indexes FollowSymLinks ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
PS: Aynı anda IIS ve Apache sunucularını çalıştırmanız ancak üzerinde çalıştıkları port değişimi ile mümkün olmaktadır. Normalde istemci talepleri HTTP aracılığı ile 80 port ’’dan ele alınmaktadır bu durumda iki sunucu da 80 portu dinlemek istediğinden işletim sistemi buna izin vermeyecektir bu yüzden servis sıralamasından önce çalışan sunucu port’’u alacak diğer sunucu hata verip kapanacaktır. Bunu IIS’’de EventLog’’dan Apache’’de error.log dosyasından takip edebilirsiniz. Fakat Apache Konfigrasyon dosyası olan httpd.conf dosyasında Listen komutu için geçerli portu 8080 belirterek üzerinde çalıştığı portu değiştirebilir ve Apache sunucusuna http://localhost:8080 ’’den ulaşabilirsiniz.Aynı şekilde IIS sunucusu tarafında da yönetim panelinden çalıştığı portu değiştirmek mümkündür.

Komut satırı:
IIS’’i durdurmak için komut satırına: net stop iisadmin yazabilirsiniz.
Apache’’i başlatmak için komut satırına: net start apache2 yazabilirsiniz.

 
 
SON 10 Haber
» Uygulama Geliştirme Yarışması
» Microsoft Yazılım Teknolojileri
» BT Akademi Eğitim Takvimi
» BT Akademi Ankara'da
» BT Akademi’den MCPD Eğitimi...
» MVC Eğitiminde Kampanya
» İş İlanı : Avenn Group
» IT Proje Yönetimi
» ASP.Net MVC Framework Semineri
» Silverlight 3.0 Programı